LJVGA: VGA Print Screen Utility Version 2.00 Copyright 1991-1993 Ares Technologies. All Rights Reserved. This document was produced in Microsoft Word for Windows 2.0 and typeset on an HP LaserJet III. We use only high-quality Maxell brand diskettes. VGA is a trademark of International Business Machines Corporation. Hewlett-Packard, HP, and HP LaserJet are registered trademarks of Hewlett-Packard Corporation. Microsoft, Windows, and Word for Windows are registered trademarks of Microsoft Corporation. Maxell is a registered trademark of Maxell Corporation. All other trade names mentioned in this document are the property of their respective holders. INTRODUCTION LJVGA is Terminate-and-Stay-Resident (TSR) program that allows you to print any VGA or Super VGA screen to an HP Laserjet or compatible printer. With a memory overhead of only 9k minimum, you can print anything you can display on your VGA card - graphics, text, even hi-res text and 256-color screens! LJVGA is simple to use. Just run the command LJVGA, and you're ready to print anything! Hitting the Print Screen key (PrtSc) will activate LJVGA, causing it to print your current screen to the printer. Text screens print just like they look, with lines and other special characters you don't usually get. Graphics screens are automatically scaled to the resolution and page you choose. There are no special tricks to remember, no special hot-keys to memorize. LJVGA does not interfere with the way you normally work, it simply waits in memory until you hit the Print Screen key. Nothing could be simpler! FEATURES LJVGA is without a doubt the best value available in print screen software. The small memory requirements provide you with tremendous power and flexibility. Just look at the options you get! + Fast printing of any screen, graphics or text, at any resolution, in any orientation, + Support for the new HP LaserJet 4, + 7 varieties of dithers, contrast and brightness controls, and more for unprecedented image control, + Robust printer control including 4 orientation printing, support for multiple page sizes, and more, + Intelligent screen support, including the ability to print any user-defined rectangular area, + Advanced algorithms for page-fill and image aspect correction, + Color plane control for printing color separations, + Load into UMB's to save precious memory, + Complete TSR control - enable, disable, enable, and more, + And much, much more! WHAT'S NEW? LJVGA has been completely rewritten for this release. The result is a program that is leaner, faster, and much more capable! If you have used LJVGA before, you will notice a greatly expanded option set. These new options give you much greater flexibility than ever before. Many parts of the program have changed, but most of the changes should be transparent to you. There are some points you should be aware of, however. + The options are now case sensitive. "-a" is different from "-A". This change was necessary to support the expanded option set. + Options are now "sticky." This means that once you set an option, it will not change until you tell it to, no matter how many times you run LJVGA! + LJVGA now has a highlight bar to show you how the print is progressing. + You can now print any user-defined rectangular screen portion. LJVGA FILES The following files are part of LJVGA. Depending on how you received LJVGA, you may have slightly different files, and you may receive the files either compressed or on diskette. INSTALL.BAT* The automatic installation batch file. STAMP.COM* The registration stamping utility. Use this file to register new copies of LJVGA. LJVGA.COM The LJVGA program file. This is the main program. LQVGA.COM The LQVGA program file. This is the companion utility for dot-matrix printers. See LQVGA.TXT for more information. LJVGA.TXT The LJVGA manual. LJVGA.PCL* The LJVGA manual in HPPCL format. Copy this file to your printer for a high-quality printed manual. LQVGA.TXT The LQVGA manual. Read this manual for more information on LQVGA. REGISTER.TXT The registration file. Complete this file and send it in to register a new copy of LJVGA. SYSOP.TXT The sysop and distributor registration form. Complete this form and send it in if you are a shareware distributor. DISTRIB.TXT The distributor list. This file lists public distributors of Ares Technologies products. README.TXT*** This file contains information about the latest changes to LJVGA. CHANGES.TXT*** This file contains the updated release history for LJVGA. DESC.SDI** This is an information file for BBS systems. FILE_ID.DIZ** This is an information file for BBS systems. LJVGA???.ZIP* This is the shareware version of LJVGA. Upload this file to your favorite on-line services. LQVGA???.ZIP* This is the shareware version of LQVGA. Upload this file to your favorite on-line services. * These files are only available with the diskette version. ** These files are only available with the compressed version. *** These files are present only if needed. REQUIREMENTS LJVGA is very flexible and runs on most PC compatible systems. However, you must have the following requirements to run LJVGA: An 8086 or better CPU. DOS 3.0 or later. A VGA or SuperVGA video adapter. An HP LaserJet, LaserJet 4, DeskJet or compatible printer. 9-30k memory depending on the options selected. LJVGA cannot print Windows screens or screens created by many popular games. These programs capture control of the computer so that LJVGA cannot function. Note that no harm will result if you attempt to print while running such programs, however, LJVGA will never activate and cannot print. INSTALLATION Installation of LJVGA is quick and easy. You must have the diskette version of LJVGA to use the automatic installation. Just insert your diskette in your A: drive and type a:install a: c:\ljvga This will install LJVGA to the LJVGA directory on your C: drive. If you have different installation requirements, use the following command: d:install d: where d is the drive containing the installation diskette, and is the directory where you want to place the LJVGA files. INSTALL will copy the program files onto your hard disk and run the registration stamping utility to customize your copy of LJVGA. If you are installing LJVGA for the first time, you will be asked to enter your name. Enter the name your software is registered under - either your name or your company's name. After you do this, your copy of LJVGA will be customized for you. If you want LJVGA to load every time you start your computer, you will need to modify your AUTOEXEC.BAT. Using any text editor, open your AUTOEXEC.BAT file (located in the root directory of your boot disk) and add the following lines to the end of the file. SET LJVGA= C:\LJVGA\LJVGA If your LJVGA is located in a directory other than C:\LJVGA, modify the above lines appropriately. Save the file and reboot to load LJVGA! If, once you have used LJVGA, you discover that you use certain options frequently, you can edit your AUTOEXEC.BAT and place the options at the end of the line that reads "SET LJVGA=". Then these options will take effect every time you run LJVGA! To print the formatted manual (registered versions only), change to your LJVGA directory and enter the following command. copy /b ljvga.pcl lpt1: USING LJVGA Using LJVGA is simple. To load LJVGA into memory, just enter the command LJVGA from the directory where LJVGA is located (usually C:\LJVGA). LJVGA will load with its default options, and is ready for use. Now whenever you press the Print Screen key, LJVGA will activate, producing a high-quality of your computer screen. You can modify the default options by using a combination of command-line switches, either the first time you run LJVGA, or later to modify the options already loaded in memory. LJVGA cannot be loaded twice. If you run LJVGA after it has been loaded, it will update the copy already in memory. If you need to remove LJVGA from memory after you have loaded it, enter the following command from the directory where LJVGA is located. LJVGA -u If no other TSR's have been loaded after LJVGA, it will unload itself, releasing any resident memory and returning Print Screen control to your system BIOS. LJVGA supports several different command-line switches. These can be entered alone or as a group to change the default behavior of LJVGA. Be aware that LJVGA retains any options you set until you unload it from memory, or until you turn the computer off. Therefore, if you set any special temporary options, you must remember to reset them when you are done. See the next section for a complete description of the available options. LJVGA ENVIRONMENT VARIABLE If you have any options which you use every time you run LJVGA, use the DOS environment variable "LJVGA" to set these options permanently. Each time LJVGA loads, it will search the environment for this "LJVGA". If you have set this variable, LJVGA will process any options set before processing the command- line. Thus in effect you create new defaults for LJVGA. For example, if you commonly use Floyd-Steinberg dithering with the brightness set to 10%, you may find yourself entering the command LJVGA -a2 -b10 very frequently. Instead, set the "LJVGA" environment variable in your AUTOEXEC.BAT as follows. SET LJVGA=-a2 -b10 Enter the options just like you would on the command-line. Now, every time you run LJVGA, it will use these options by default! Note, however, that you can override these options either by using the "-I" option to ignore the environment settings, or by overriding the particular option on the command-line. For instance, the command LJVGA -b20 will still choose Floyd-Steinberg dithering as specified in the environment, but it will set the brightness to 20%. The option entered on the command-line replaces the matching option in the environment. OPTION REFERENCE LJVGA supports a rich set of options which allow you to alter its behaviour to suit your needs. This section lists those options, what they do, and how to use them. By using a combination of these options, you can tailor LJVGA to almost any print screen task. All LJVGA commands follow the syntax LJVGA [switches] where [switches] is optionally any combination of the options listed in this section. Each option must be separated from the others by a space, and must have no spaces in it. Most options are "sticky", i.e. once you set them, they remain in effect until you explicitly reset them, unload LJVGA, or turn off the computer. Some options are only effective the first time LJVGA is loaded and cannot be used to modify a previously loaded version. These options are noted in their descriptions. Note also that all options are case sensitive. In other words, "- a" is different from "-A". This is necessary because of the large number of options LJVGA supports. Be careful when you are entering options. If you enter an option in the wrong case, you may get unexpected results! The following conventions are observed for the options presented in this section. Note that when an option requires an argument, you should not type any space between the option letter and its argument. -V Simple options are presented as you should enter them. These options take no arguments. -hñ Options marked with the ñ symbol accept either the "-" or "+" characters as arguments. Use "-" to turn the option off, and "+" to turn it on. You may also turn the option on by omitting the argument. (No argument is the same as "+".) -Yx Options with the "x" symbol accept a single letter as an argument. The possible arguments will be listed for you under each appropriate option. -Fxxx Options with the "xxx" symbol accept a string of characters as an argument. This form is commonly used for file names, etc. -aN Options with the "N" symbol accept a number as an argument. Only whole numbers are allowed. -sx,x Options with a comma indicate a list of arguments. The arguments themselves will be of another type listed here. When you encounter this form, you may enter a list of arguments of the appropriate type with commas between them. Do not include any spaces! Typically, you can omit parts of the list by leaving the value blank - but make sure you still include the leading commas. You may also usually omit the end of the list and any trailing commas. ! Important comments are marked by a flag. You should take should take special note of any information in these sections. The options are grouped according to four major categories. The Operational Group contains options which affect the way LJVGA loads, unloads, and runs. The Image Control Group contains options which affect the way LJVGA renders the screen image. The Printer Control Group contains options which affect the way LJVGA handles printing. Finally, the Screen Control Group contains options which affect the way LJVGA handles the VGA hardware. Operational Group These options affect the way LJVGA loads, unloads, and runs. Various informational options are contained in this group. -? Print synopsis. This option prints a copyright notice and a short summary of options. No other action is taken if you use this option. -Dñ Enable debugging kernel This option will cause LJVGA to print additional debugging information. This option must be specified the first time LJVGA is loaded to enable debugging support. Thereafter it can be disabled with the "D-" option or re-enabled with the "D+" option. When debugging is enabled, LJVGA will produce an extra page containing information about the state of your VGA card each time you press the Print Screen key. This option should be used on the advice of Ares Technologies personnel to assist in resolving printing problems. -D+ Enable debugging. -D- Disable debugging (does not free up the additional memory). -H Load into high memory This option will cause LJVGA to load into upper (UMB) memory if enough memory is available. If LJVGA cannot load itself into high memory, it will print a warning and load in lower memory. ! It is recommended that you use this option instead of utilities such as "LOADHIGH". LJVGA has an advantage over such programs in that it only installs its resident portion into high memory. Third-party utilities attempt to place all of LJVGA in high memory and may fail. -I Ignore environment settings This option causes LJVGA to ignore any options set in the "LJVGA" environment variable. Only command-line options will be processed. -Q Quiet (no load messages) This option causes LJVGA to load without displaying any messages or errors. -V Verbose (load messages) This option causes LJVGA to print a summary of options in effect after loading. -Yx Conserve memory This option controls the amount of memory allocated to LJVGA. Normally LJVGA allocates as much memory as it requires for any possible print job. This option allows you to reduce the memory assigned to LJVGA by sacrificing the dither buffers. This prevents you from using the advanced dithers. 2 Normal memory. All dithers are available. 1 Medium memory. Only the halftones and Floyd- Steinberg dithering are available. (dithers 0-2). 0 Small memory. Only the halftones are available. (dithers 0 and 1). ! The conserve memory option is only valid when LJVGA is first loaded. This option cannot be changed once LJVGA is loaded. DEFAULT: -Y2 -Z Reset default options This option resets all internal LJVGA settings to their defaults. If this option appears anywhere on the command-line, the internal settings are reset before processing any new environment and command-line settings. -d Disable This option will cause LJVGA to return control to the previously loaded print-screen routines (usually in the system BIOS). This option does not remove LJVGA from memory. -e Enable This option will enable LJVGA if it has been previously disabled. LJVGA will regain control with the settings it had when it was disabled. -n Instant print (non-resident) This option will cause LJVGA to immediately print the current screen without becoming resident. This option can be used to run LJVGA from batch files, and could be used to create a primitive file printing program. This option will cause LJVGA to ignore any previously loaded copy, and will use only default options and options set on the command-line. -hñ Enable highlight bar LJVGA normally displays a highlight (progress) bar when processing a graphics screen. This bar lets you know the progress of the print screen. This option allows you to disable the progress bar. -h+ Enable highlight bar. -h- Disable highlight bar. DEFAULT: -h+ -q Query current setting -qx Query options This option serves two roles. When specified with no argument, this option will cause LJVGA to display a summary of the current settings. This is the same summary available with the Verbose option (-V). This option is also used to display help on the other options. To get help on an option, specify the option letter as an argument to the "-q" option. For example, to get help on the available dither algorithms (option "-a"), specify the option "-qa". ! When this option is specified, no other processing occurs. Processing does occur when the Verbose option (-V) is set. -u Unload from memory This option will disable LJVGA and remove it from memory. LJVGA will return Print Screen control to the previously loaded print-screen routines (usually in the system BIOS). LJVGA will only unload if it is the last TSR loaded. Image Control Group This group contains options which affect the way LJVGA renders the screen image. Brightness, contrast, dither, and color controls are contained in this group. -Cxxx Set color mask This option allows you to specify which of the RGB color planes to print. This option can be used for advanced screen manipulation, or for printing RGB color separations. To set the color planes to print, specify any combination of the letters "R", "G", and "B". For example, set the option "-CR" to print only red, or "- CRGB" to print all colors. DEFAULT: -CRGB -aN Set dither algorithm This option allows you to select the method LJVGA uses for creating the output image. The "dither" is the method by which LJVGA determines the pattern of dots to print to simulate different colors. The different algorithms produce different results and are useful for different types of applications. Experiment with these options to see which works best for you. Possible values for N are listed below. 0 Halftone. This is the fastest dither pattern. This pattern produces different size dots resulting in an image similar to the pictures in a newspaper. 1 Bayer algorithm. This is a good, fast general- purpose algorithm and is characterized by cross- hatch patterns in the output. 2 Floyd-Steinberg algorithm. This dither method is slower than the Halftone and Bayer algorithms, but produces much better output for continuous-tone images. This is the same algorithm used in the original versions of LJVGA. 3 Burkes algorithm. This dither method is superior to the Floyd-Steinberg algorithm, but is slower and requires more memory. 4 Sierra algorithm. This dither method is superior to the Burkes algorithm, but is slower. 5 Jarvis algorithm. This dither method is superior to the Sierra algorithm, but is slower. 6 Stucki algorithm. The Stucki and Jarvis algorithms are approximately equal in quality and speed. Stucki produces slightly different results than Jarvis, and thus may be suitable for different applications. DEFAULT: -a0 -bN Set image brightness This option allows you to change the percentage of brightness of the printed output. The output can be made "blacker" or "whiter" with this option. Possible values for N range from -100 to 100. Negative values increase the black level, with -100 corresponding to a completely black image. Positive values increase the white level, with 100 corresponding to a completely white image. 0 is the default and results in no adjustment. ! At 300 DPI and above on most laser printers, the black dots tend to overwhelm the white space, resulting in fairly dark images. Certain dither algorithms aggravate this problem. This can be compensated by increasing the brightness. Good results can usually be achieved by increasing the brightness by 10-25%. DEFAULT: -b0 -cN Set image contrast This option allows you to change the percentage of contrast of the printed output. Areas of similar color can be blended or accentuated using this option. Possible values for N range from -100 to 100. Negative values decrease the contrast, with -100 corresponding to 50% grey output. Positive values increase the contrast, with 100 corresponding to an image with only pure black and white. 0 is the default and results in no adjustment. DEFAULT: -c0 -gñ Suppress background Some screens have large areas of background color that are not desirable to print. This option suppresses the printing of those areas, instead printing white where the background appears. ! This option requires that the graphics program in use obey the VGA conventions for background color. This is usually the case. Also note, however, that the background color can be used as a valid color in the image itself. LJVGA cannot detect this and will suppress the color anywhere it appears. DEFAULT: -g- -iñ Invert image This option will invert the colors for graphics screens so that white on the screen will print as black and vice-versa. Other colors are similarly reversed, printing a "negative" of the screen image. DEFAULT: -i- -sx,x Set scaling This option allows you to control the size of the printed image. LJVGA will normally scale the printed image to fill the page, but you can scale the size up or down with this option. This option takes a pair of numbers representing the x- and y-scaling respectively. Each number represents the number of printed pixels that will be used to represent each screen pixel in the respective direction. For example, -s3,3 means that for each pixel on the screen, LJVGA will print a box 3 pixels wide by 3 pixels long. You can also specify certain special sizing characters as shown below. f Fill the page in the direction specified. m Fill the page using an evenly divisible number of pixels. By default LJVGA prints "partial" pixels in order to fill the page completely. This is usually invisible to the eye, but may be undesirable in certain situations. The "m" format prevents LJVGA from producing partial pixels. Partial pixels will be disabled in both directions if this format is used. d Default. Use this format to cause LJVGA to scale this direction to match the other. This will preserve the correct aspect ratio. With this option, you can set the scaling for a smaller image or for a larger image. If you specify a scaling factor greater than the maximum, the output image will be clipped to the dimensions of the page. You do not have to set both values. If either number given is 0 or d, the scaling value for that direction will be determined from the value for the other direction in order to preserve the correct aspect ratio. Setting both values to 0 will result in the default, maximum-size image. For your reference in determining the appropriate scaling values, LJVGA assumes that the output must fit on the page size selected, minus a small margin. The number of output pixels that this represents varies depending on the resolution chosen. Also, note that the x and y values correspond to screen dimensions, and thus may change depending on the page orientation selected. Here is a sample computation. Most laser printers can print approximately 2450 pixels across at 300 DPI. We want to represent 640 screen pixels across, so 2450 / 640 = 3.83. Since LJVGA only allows you to specify full pixels, you would enter 3 for the x value. You would enter d for the y value to cause it to be computed from the x value to produce the correct aspect ratio on output. DEFAULT: -sf,d Printer Control Group The options in this group affect the way LJVGA handles printing. Printer and paper selection, output redirection, and print modes are contained in this group. -Fxxx Print to file This option causes LJVGA to send its output to a file instead of the printer. To use this option, simply specify the filename after the "-F". For example, to send output to the file "screen.prn", use the option "- Fscreen.prn". To cause LJVGA to print to the printer again, specify "-F" without a filename. -F Print output to . -F Print output to the printer ports. ! Use this option with care. If the specified file already exists, LJVGA will overwrite it. DEFAULT: -F -Mxxx Mask control characters When LJVGA prints a text screen, it attempts to faithfully reproduce the entire contents of the screen. Some printers, however, cannot correctly print all of the control or extended characters available on the screen. This option can be used to prevent LJVGA from printing these characters. Dots or spaces will be printed to preserve the screen spacing. Use any combination of the options shown below. C Do not print control characters. X Do not print extended characters. . Print dots in place of illegal characters. Enter "-M" with no options to print all characters. DEFAULT: -M -Pxxx Select page size The option allows you to select the paper size for your printer. This option is dependent on the printer selected. Use the "-qP" option to list the page sizes available for your printer. The definitions for the HP LaserJet and LaserJet 4 are shown below. You can use either the number or the paper name. 0, letter American letter size paper. (8.5" x 11") 1, legal American legal size paper. (8.5" x 14") 2, executive Executive size paper. (7.25" x 10.5") 3, a4 A4 size paper. (210mm x 297mm) DEFAULT: Dependent on selected printer. -P0 on the HP LaserJet and LaserJet 4. -fñ Form-feed page Normally, LJVGA will eject the page from the printer once it has finished printing the screen. This option will cause LJVGA to leave the page in the printer until it is full. ! You may run out of memory while printing high-res graphics with this switch. Make sure your printer has enough memory for the whole page! Also, LJVGA normally resets the printer options to produce the cleanest print possible. It cannot do this while using the -f option. If you experience problems printing with the -f option, manually reset your printer before printing. DEFAULT: -f+ -kN Print multiple copies This option allows you to print multiple copies of a screen. N is number of copies you wish to print. For example, if you want five copies of a screen, enter the option "-k5". ! Certain printers such as the HP LaserJet have the ability to print multiple copies of a single page. If your printer has this capability, LJVGA will use it to print as fast as possible. If your printer does not support this feature, LJVGA will manually produce the desired number of copies. DEFAULT: -k1 -lx Set printer port This option allows you to change the printer port LJVGA will print to. Possible values for N are 1 for LPT1, 2 for LPT2, or 3 for LPT3. You can also set N to 0 to print to PRN:. Note: Setting the printer port to 0 will also force LJVGA into DOS print mode (explained below). DEFAULT: -l1 -mN Set print mode Set print mode. This option allows you to change the method by which LJVGA sends data to the printer. This is useful in cases where you are using some troublesome print redirectors or when you have a defective BIOS. Possible values for N are listed below. 0 BIOS print mode. All printing is done through calls to the system BIOS. This is the default option and is the fastest print mode. This option should be chosen except in special situations. 1 BIOS print mode with DOS Signaling. This print mode is intended for use with some network software. When using this mode, LJVGA prints all data through the system BIOS, but also uses DOS to open and close a phantom print file. This method can be used on some networks to signal the beginning and ending of a print job. 2 DOS print mode. When using this print mode, LJVGA prints all data through DOS calls. This option is included for situations in which compatibility is a problem, or where output should be redirected to special DOS devices. Printing is much slower in this mode. DEFAULT: -m0 -ox Set page orientation This option allows you to select the direction in which LJVGA prints graphics screens. The possible values you can use for "x" are listed below. 0, p Portrait (upright) orientation. 1, l Landscape (sideways) orientation. 2 Reverse portrait (upside-down) orientation. 3 Reverse landscape (reverse sideways) orientation. ! LJVGA handles page orientation internally and can print any orientation on any printer. DEFAULT: -op -pxxx Select printer type This option allows you to set the printer type for LJVGA to use. Use the "-qp" option to list the available printer types. The currently supported printers are listed below. You can use the number or the name of the printer. 1, laserjet Selects the HP LaserJet and compatibles. 2, lj4 Selects the HP LaserJet 4. ! Once you have selected a printer, you cannot change to a more capable printer without unloading and reloading LJVGA. For example, if you originally selected the LaserJet, you cannot change to the LaserJet 4. However, if you originally selected the LaserJet 4, you can change to the LaserJet and later back to the LaserJet 4. This limitation occurs because of the way LJVGA uses memory. Accordingly, if you plan on switching printer type, always select the most advanced printer when first loading LJVGA. DEFAULT: -p1 -rN,N Set resolution This option allows you to set your printer's graphics resolution in dots-per-inch (DPI). Resolutions available depend on the printer type selected. Use the "-qr" option to list the resolutions available for your printer. The resolutions available on the HP LaserJet and the HP LaserJet 4 are listed below. 75 75x75 dpi 100 100x100 dpi 150 150x150 dpi 200 200x200 dpi (LaserJet 4 only) 300 300x300 dpi 600 600x600 dpi (LaserJet 4 only) Choose the resolution you desire by setting either or both "N" values. LJVGA will pick the closest match to the resolution you specify and select it on your printer. Some printers, especially laser printers, can only print the same horizontal and vertical resolutions. Only the first "N" value is required in this case. LJVGA will automatically scale graphics to the resolution you choose. DEFAULT: The maximum resolution available on the chosen printer. Screen Control Group The options in this group affect the way LJVGA handles the VGA hardware. The only option you will commonly use in this group is the screen window option. -WN,N,N,N Set screen window This option allows you to select an arbitrary rectangular screen area to print. The format for this option is "-W,,,. Coordinates are based on a "grid" system, where the coordinates represent a "grid" around the actual screen pixels. For example, the default coordinates for a 640x480 screen are (0, 0, 640, 480). The coordinates for the right side of the screen are (320, 0, 640, 480). LJVGA will automatically scale the selected rectangle to fill the printed page while preserving the correct aspect ratio. DEFAULT: Print the entire visible screen. -vN Select VGA handling mode This option allows you to specify the way LJVGA communicates with the VGA card. The possible values for N are listed below. 0 BIOS-level support only. 1 Direct register-level support. DEFAULT: Dependent on the VGA card type selected. -xN Set VGA card type This option allows you to override the VGA board type selected. The VGA card type is normally auto-detected and set, but you can override the default with this option. The currently supported board types are listed below. 0 Generic VGA. This is the proper setting for all IBM and basic VGA boards. 1 ATI chipset. 4 Paradise chipset. DEFAULT: Autodetected. EXAMPLES LJVGA Load LJVGA into resident memory using the default options. LJVGA -l2 Load LJVGA into resident memory and redirect output to LPT2:. LJVGA -ol -a2 Load LJVGA into resident memory and choose landscape graphics with Floyd-Steinberg dithering. LJVGA -r75 -n Print the current screen at 75 DPI. Do not load LJVGA into resident memory. LJVGA -s1,1 Load LJVGA into resident memory and set the scaling so that each screen pixel is represented by one printer pixel. LJVGA -sd,4 Load LJVGA into resident memory and set the scaling so that each screen pixel is represented by 4 printer pixels down and by an appropriate number of printer pixels across. LJVGA -d Disable a previously loaded copy of LJVGA and return print-screen control to the system BIOS. set LJVGA=-b10 -ol LJVGA Load LJVGA into resident memory and choose landscape graphics with brightness set to 10%. set LJVGA=-ol -a4 LJVGA -a0 Load LJVGA into resident memory and choose landscape graphics. Choose halftone dithering. (The command line option -a0 overrides the environment option -a4.) LJVGA -plj4 -Pa4 -V Load LJVGA into resident memory with HP LaserJet 4 support and A4 paper selected. Display a summary of the loaded options when done. LJVGA -Y0 Load LJVGA into resident memory and make it as small as possible. Only halftone and Bayer dithers will be allowed. OPTION SUMMARY This section summarizes the options you can use with LJVGA. Operational Group -Dñ Enable debugging kernel -H Load into high memory -I Ignore environment settings -Q Quiet (no load messages) -V Verbose (load messages) -Yx Conserve memory -Z Reset default options -d Disable -e Enable -hñ Enable highlight bar -n Instant print (non-resident) -qx Query options -u Unload from memory Printer Control Group -Fxxx Print to file -Mx Mask control characters -Pxxx Select page size -fñ Form-feed page -kN Print multiple copies -lx Set printer port -mN Set print mode -ox Set page orientation -pxxx Select printer type -rN,N Set resolution Image Control Group -Cxxx Set color mask -aN Set dither algorithm -bN Set image brightness -cN Set image contrast -gñ Suppress background -iñ Invert image -sx,x Set scaling Screen Control Group -Wxxx Set screen window -vN Select VGA handling mode -xN Set VGA card type HOW IT WORKS LJVGA has two primary jobs - printing text and printing graphics. Printing text is straightforward. LJVGA simply reads the text from the screen and sends it to the printer. LJVGA has an advantage over built-in print screen routines, however, since it knows how to control the laser printer. Thus, LJVGA can set up the printer to print the extended characters such as the line- drawing characters. It can also set up the printer to handle special screen modes such as the 132x60 text modes available on some SuperVGA cards. Printing graphics is where LJVGA is most useful. DOS has only very basic graphics printing capability - and even then this ability is only made available by loading large TSRs. LJVGA solves this shortcoming by providing high-quality printing in a very small package - approximately 9k minimum. The biggest problem faced by LJVGA is how to produce a recognizable image of the screen, which can display up to 256 colors out of a palette of 262,144 colors, on the laser printer, which has only 2 colors - black and white. LJVGA solves this problem by a method called dithering. This is a method by which a larger number of colors can be represented by using patterns of dots chosen from a smaller number of colors. In this case, this allows up to 256 colors to be represented by different patterns of only two colors. Actually, colors images cannot be accurately reproduced on a black-and-white printer (obviously!) Therefore, LJVGA actually produces a print that is based on the intensities of the colors on the screen. This is the same as saying that if you were to convert the colors on screen to shades of grey, LJVGA produces an approximation of the shades-of-grey screen. This works because the human eye is more sensitive to certain colors than to others, thus these colors can be approximated by different grey shades. Thus, by printing areas of dots of varying densities, LJVGA can approximate these grey shades. Printing just a few dots results in bright areas, while printing more dots results in dark areas. LJVGA uses two major varieties of dithering to produce these dot- densities. The first, fastest, method is known as ordered or Bayer dithering and uses a predefined pattern to reproduce each color. This pattern contains a set of numbers representing color threshold values. As the image is generated, each screen pixel is compared against the threshold value at the spot in the pattern where that pixel will be plotted. If the pixel color is greater than the threshold value, a dot is printed. Otherwise, no dot is printed. Thus the output image has a regular, ordered appearance, because it is based completely on the original pattern. LJVGA uses two different patterns for this method. The first is a "clustered" pattern. In this pattern, similar threshold values are grouped closely together to produce large dots. This pattern generates an image which appears to be made up of different sized dots, much like the pictures in a newspaper. The second pattern is a "dispersed" pattern which produces dots in a widely spread pattern. Because of the way this pattern is generated, it produces a characteristic cross-hatched output. The second variety of dithering is known as random dithering because it produces dots in a seemingly random manner. This dither is also known as an error-dispersion dither because of the way it produces dots. This method works in two steps. In the first step, the current screen pixel is compared against a predefined threshold value. If the color is greater than the threshold, a dot is printed, otherwise, no dot is printed. The second step compares what is actually printed against what should be printed. This produces an "error" value which is divided up and added to the neighboring screen pixels. This process is repeated for every pixel in the image. Thus if a dot is supposed to be dark grey and we plot black, the error value generated reduces the chance that the next pixel plotted will also be black, ensuring that we get an area of "dark grey" on the output. This method is slower than the ordered dithers because of the math involved, but because it is based on the image itself, and not on a predefined pattern, it significantly reduces the chances of incidental patterns ("artifacts") emerging in the final output. LJVGA employs five of the most popular error-dispersion patterns: Floyd-Steinberg, Burkes, Sierra, Jarvis, and Stucki. ADDITIONAL NOTES Printing graphics on a laser printer requires large amounts of memory. If you are planning on printing graphics screens at 300 DPI or above, you should have at least 1 megabyte of memory in your laser printer. 512k should be sufficient for printing text and graphics at lower resolutions. LJVGA is only guaranteed to work with VGA screen modes that are supported by video BIOS. Most SuperVGA cards have extended BIOS chips which support all of the vendor-defined modes and thus will work with LJVGA. However, some graphics packages such as PICEM and VPIC can directly program VGA cards into modes not supported by BIOS. LJVGA is not guaranteed to work with these modes. LJVGA now has built-in hardware support for the ATI and Paradise chipsets. When boards utilizing these chipsets are detected, LJVGA will switch to VGA register-level support to control them. This allows LJVGA greater capability and accuracy than was previously possible. LJVGA can also now detect and support the 360x480x256 mode that some programs such as PICEM use. TIPS FOR MICROSOFT WINDOWS USERS LJVGA can be used with Microsoft Windows to print DOS session screens. Only full-screen DOS sessions are supported; all Windows applications and windowed DOS sessions are handled by the Windows native print screen handler. To use LJVGA with Windows, you must load LJVGA before entering Windows. You must also make a change to the PIF files used with the applications you wish to print. To make the required change, run the Windows PIF Editor and load the appropriate PIF file. Once you have loaded the PIF file, choose the "Advanced" button at the bottom of the PIF editor window. This will take you to the Advanced Options window. Near the bottom of this window is a section titled "Reserve Short-cut Keys". If you want to use LJVGA with this application, make sure the "PrtSc" box is checked. Once you have checked this box, save your changes, and you are ready to print your application screens! CURRENT KNOWN PROBLEMS LJVGA cannot print text screens with redefined character tables. All text prints rely on the fonts built into the printers. Redefined character tables allow you to create virtually unlimited symbols on the screen, but since the printer does not know about these characters, it cannot print them. This problem occurs with software such as the Norton Utilities for DOS. LJVGA cannot print TrueColor (15 and 24 bit) graphics. Currently only palette-based graphics are supported. LJVGA cannot handle TrueColor graphics because the complete color information is stored in the display memory and requires more processing to reproduce. TrueColor support is planned for a future version. REGISTRATION STAMPING UTILITY All registered copies of LJVGA come with a program called STAMP.COM. This program contains the registration information for the registered user and can be used to register new versions of the program which you receive from us or download from bulletin boards. When you register LJVGA, you can choose from three different registration options: current version only, current and next version, or Lifetime registration. Your copy of STAMP contains the information necessary to update new versions of LJVGA according to the registration option you have chosen. For instance, if you registered version 1.50 of LJVGA for the current version only, your copy of STAMP will work on any 1.xx version, i.e. any version up to, but not including 2.00. If you registered for the current version and one upgrade, your copy of STAMP will work on any 1.xx or 2.xx version. A copy of STAMP received with a Lifetime registration will work on any version of LJVGA available. To register a new version of LJVGA, place the new LJVGA.COM and STAMP.COM in the same directory. In DOS, change to the directory where the files are located and enter the following command. stamp ljvga The first time you run STAMP, it will prompt you for your name. Enter the name your software is registered under. STAMP will place your registration information in the new copy of LJVGA and will inform you when it is done. If for some reason STAMP cannot update LJVGA, such as if your registration has expired, you will receive an error message telling you what is wrong. Now your new copy of LJVGA is registered and ready to use! LJVGA RELEASE HISTORY v2.00 (930628) The loader has been completely rewritten. The graphics engine has been modified and extended to handle many new features. See the documentation for a complete explanation of the new features. v1.80 (930222) [Limited Release] Added video mode to debugging info. Corrected memory row-length calculations. Added row-length to debugging info. Added mode table search for ATI boards. v1.78d (930115) [Limited Release] Added the ability to detect and print graphics screens with a screen start offset. Modified setup and page borders for A4 paper. v1.77 (921215) [Limited Release] Due to continuing problems, support for interrupt 21 has been disabled. (again) v1.76 (921205) Section headings have been added to the debug page. A color table dump has been added to the debug page. Added direct hardware reads for the screen size. This solves various problems with some SuperVGA adapters which do not report the screen size correctly in high resolution modes. v1.75 (921109) Changed invert option. Invert now inverts the color palette, rather than the finished image. This fixes the problems with pure-white backgrounds and the brightness/contrast controls in inverted mode. Corrected a bug which prevented LJVGA from activating if DOS was active. v1.71 (920920) This is a maintenance release which includes only minor changes to the documentation. v1.70 (920818) Added full-page scaling. v1.61 (920814) Added two new Bayer dithers. Modified to keep only one dither pattern in active memory. Increased support for older networks. Fixed a problem with the DOS print-logging flag in Dell machines. Added color resolution checks for certain VGA adapters. Added ATI-specific code. v1.53 (920627) Added use of DOS print-screen busy flag. Made resident section more crash-proof. Added serial numbering. v1.52 (920608) Corrected color mapping for 16-color modes. Corrected control character printing. This bug was only noticeable on non-HP printers. v1.50 (920422) Added instant print option. Added print mode option. Added page orientation option. Added Bayer dithers. Up to 30% faster than previous dither. Added contrast option. Added brightness option. Added scaling option. Added debugging option. Fixed an error in the Floyd-Steinberg dithering option. Output is now much improved. Added better interrupt handling for improved safety and error control. Fixed a bug which would allow LJVGA to load when using the enable/disable controls. Fixed a bug which prevented LJVGA from finding a previously loaded copy in fragmented memory. Fixed text print routine so that control characters are printed, not interpreted. v1.30 (920304) Fixed a bug with command-line parsing under MS-DOS 4.0/5.0. Added invert option. Added unload option. v1.20 (910730) Added suppress form-feed option. v1.10 (910622) Added the disable/enable options. v1.00 (910326) Added resolution option. Added printer port option. Added error detection for missing or off-line printers. Added the ability to detect and update a previously loaded copy. v0.50 (910307) Initial release. PROGRAMMING FOR LJVGA You can provide advanced screen printing for your own programs with LJVGA! LJVGA works by hooking into the standard print screen interrupt vector, interrupt vector 5. (If you have ever seen your computer crash and begin print-screening madly, you've experienced interrupt 5. The microprocessor also uses interrupt 5 to signal an error.) Therefore, make sure LJVGA is loaded into memory before you run your program. Then all you have to do to invoke LJVGA from within your program is to generate an interrupt 5. Sample instructions appear below. In assembler, INT 5 ; call print screen routine In Borland C/C++, geninterrupt(5); /* call print screen routine */ That's all there is to it! At the time of this writing, there is no simple way to adjust the internal LJVGA settings from within your programs. You can, however, change the LJVGA settings by running it with the appropriate options via a DOS shell or an EXEC call. LJVGA will locate the copy it has previously loaded and update it. The updated setting will remain in memory when the DOS shell exits. Combine this use with the Quiet option (-Q), and your users will never be aware that you have invoked a DOS shell! Direct API support into LJVGA is planned for a future release. Please note that you must have a special license to distribute LJVGA with your programs. Please contact Ares Technologies for more information about a Reseller's license. TECHNICAL SUPPORT If you have any questions or comments about LJVGA, contact: Mail: Ares Technologies 243 Fairfax Rd. Blacksburg, VA 24060-6595 Phone: 703-552-6273 E-Mail: CIS: [73237,1572] MHS: support @ ares Internet: support@ares.mhs.compuserve.com When calling for technical support, please have the following information available: the version of LJVGA you are using (use the -? option to find out) the make and model of VGA board you use the make and model of your printer the version of DOS you use Ares Technologies is also available for custom programming projects. Please feel free to contact us if you would like to discuss your programming needs. CREDITS LJVGA is the result of many hours of hard work and research. What originally began as a simple program for my own use has expanded into a full-featured commercial program. I could not have done it without the support of my users, and the many positive comments I have received. This credit belongs to all of you who have supported my efforts and made this program possible. Please, if you find this software useful, consider registering it. The Ares philosophy is that software should work well, should be easily available, and should not cost a fortune. I believe that LJVGA meets these goals. Your registration will allow me to devote more of my time to producing LJVGA and other quality programs. A special thanks goes out to Don Slaymaker for his unending patience and help in debugging the ATI-specific code sections. To Johann Delago for yet more help in extending the ATI hardware support, and many suggestions on additional hardware support. To David Wright & co. - my first mass reseller. To Robert Everett & co. for "pushing the envelope." And finally to Tom Fasulo for the best promotional support a shareware author could ask for. REGISTRATION If you find LJVGA useful and convenient, a registration of $10 or more would be appreciated. If you send $20 or more, you will receive a disk containing the current version of the software. You will also receive a disk with the next major version when it becomes available. For a fee of $50, you will receive a lifetime registration for LJVGA. This will entitle you to every major and minor version of LJVGA as they are released. These will be automatically sent to you free of additional charge. Site licenses are available for commercial and multiple user organizations. Please read the file REGISTER.TXT for more information. Reseller information is available for developers wishing to bundle pre-registered versions of LJVGA with their own software. Please contact Ares Technologies directly for more information. Please state the current version of the software you are using. Send check or money order to: Ares Technologies 243 Fairfax Rd. Blacksburg, VA 24060-6595 You can also order LJVGA from the Public Software Library with your Visa, MasterCard, American Express, or Discover card at one of the following numbers. These numbers are for ordering only. For all other information concerning LJVGA, please contact Ares Technologies directly. PsL Product Number: #10515 Mail: PsL P.O. Box 35705 Houston, TX 77235-5705 Phone: 800-2424-PSL 713-524-6394 FAX: 713-524-6398 E-Mail: CIS [71355,470] You can also register LJVGA on CompuServe in the SWREG forum. If you have a CompuServe account, logon and type "GO SWREG". Follow the instructions given to register your copy of LJVGA. The registration code for LJVGA is 227. Once we receive notification from CompuServe, your registered diskette will be sent to you automatically. SOFTWARE LICENSE AGREEMENT LJVGA VGA Print Screen Utility Copyright (c) 1991-1993 Ares Technologies. All Rights Reserved. Notice: By using LJVGA, you agree to be bound by the terms of this license. If you do not agree with the conditions listed herein, you may not use LJVGA. If you have any questions regarding your software license, please contact Ares Technologies at the address listed elsewhere in this document. You may use, copy, and distribute LJVGA for non-commercial purposes only, provided the following conditions are met: No fees may be charged for its use or distribution. The program and accompanying documentation must be distributed in whole, unmodified form. Reverse compilation, reverse engineering, or any other form of code decomposition is expressly prohibited. Clubs, user groups, and shareware distributors may charge a nominal fee for expenses and handling for distributing LJVGA. Operators of electronic bulletin board systems may charge only normal membership fees, and may not require additional fees for specific access to LJVGA. Distributors are encouraged to register with Ares Technologies. See the file SYSOP.TXT for additional information. Site and commercial licenses are available for LJVGA. Please read the file REGISTER.TXT, or contact Ares Technologies for more information. Ares Technologies hereby disclaims all warranties relating to this software, express or implied, including without limitation any warranties of merchantability or fitness for a particular purpose. Ares Technologies shall not be liable for any damages, direct, consequential, or otherwise, suffered due to loss of data or any other reason, even if Ares Technologies has been advised of the possibly of such damage. In no event shall Ares Technologies' liability for any damages exceed the price paid for the license to use the software, regardless of the form of the claim. The user of this software bears all risk as to the quality and performance of the software. ----------------end-of-author's-documentation--------------- Software Library Information: This disk copy provided as a service of Public (software) Library We are not the authors of this program, nor are we associated with the author in any way other than as a distributor of the program in accordance with the author's terms of distribution. Please direct shareware payments and specific questions about this program to the author of the program, whose name appears elsewhere in this documentation. If you have trouble getting in touch with the author, we will do whatever we can to help you with your questions. All programs have been tested and do run. To report problems, please use the form that is in the file PROBLEM.DOC on many of our disks or in other written for- mat with screen printouts, if possible. PsL cannot debug pro- programs over the telephone, though we can answer questions. Disks in the PsL are updated monthly, so if you did not get this disk directly from the PsL, you should be aware that the files in this set may no longer be the current versions. Also, if you got this disk from another vendor and are having prob- lems, be aware that some files may have become corrupted or lost by that vendor. Get a current, working disk from PsL. For a copy of the latest monthly software library newsletter and a list of the 4,000+ disks in the library, call or write Public (software) Library P.O.Box 35705 Houston, TX 77235-5705 Orders only: 1-800-2424-PSL MC/Visa/AmEx/Discover Outside of U.S. or in Texas or for general information, Call 1-713-524-6394